﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QldtSdh.BLL;
using QldtSdh.DAL.Models;
using QldtSdh.GUI.Utils;
using QldtSdh.Utils;

namespace QldtSdh.GUI.DuLieu
{
    public partial class FormQuanLyNganhDaoTao_ChiTiet : QldtSdh.GUI.Common.BaseDialog
    {
        NganhDaoTao chuyenNganhDaoTao;
        int countObjectAdded = 0;
        public event Common.TListChangedEventHandler OnChanged;
        public FormQuanLyNganhDaoTao_ChiTiet(NganhDaoTao chuyenNganhDaoTao = null)
        {
            InitializeComponent();
            this.chuyenNganhDaoTao = chuyenNganhDaoTao;
            LoadDonVi();
            InitInterface();
        }

        void InitInterface()
        {
            if (chuyenNganhDaoTao != null)
            {
                this.Text = string.Format(TITLE_FORM_DETAIL.EDIT, ENTITY_NAME.CHUYENGANHDAOTAO);
                chkTiepTucBoSung.Checked = false;
                chkTiepTucBoSung.Visible = false;
                txtMa.Text = chuyenNganhDaoTao.MaNganhDaoTao;
                txtTen.Text = chuyenNganhDaoTao.TenNganhDaoTao;
                txtMaSoNganh.Text = chuyenNganhDaoTao.MaSoNganhDaoTao;
                txtGhiChu.Text = chuyenNganhDaoTao.MoTa;
                //if (chuyenNganhDaoTao.DanhChoNCS.HasValue && chuyenNganhDaoTao.DanhChoNCS.Value)
                //    rChuyenNganhTienSi.Checked = true;
                //else
                //    rChuyenNganhThacSi.Checked = false;
                cmbDonViPhuTrach.SelectedValue = chuyenNganhDaoTao.MaDonViPhuTrachGUID;
            }
            else
            {
                this.Text = string.Format(TITLE_FORM_DETAIL.ADDNEW, ENTITY_NAME.CHUYENGANHDAOTAO);
                chkTiepTucBoSung.Visible = true;
                chkTiepTucBoSung.Checked = true;
                txtMa.Text = "";
                txtTen.Text = "";
                txtMaSoNganh.Text = "";
                txtGhiChu.Text = "";
                //rChuyenNganhThacSi.Checked = true;
            }
            txtMa.Focus();
        }

        void LoadDonVi()
        {
            cmbDonViPhuTrach.DataSource = BizDonViDaoTao.GetList();
            cmbDonViPhuTrach.DisplayMember = "TenDonVi";
            cmbDonViPhuTrach.ValueMember = "MaDonViGUID";
        }

        bool ValidateData()
        {
            errorNotify.Clear();
            if (txtMa.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtMa, string.Format(ERROR_CONSTANT_STRING.LOI_MARONG, ENTITY_NAME.CHUYENGANHDAOTAO));
                txtMa.Focus();
                return false;
            }
            if (txtTen.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtTen, string.Format(ERROR_CONSTANT_STRING.LOI_TENRONG, ENTITY_NAME.CHUYENGANHDAOTAO));
                txtTen.Focus();
                return false;
            }
            if (txtMaSoNganh.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtMaSoNganh, string.Format(ERROR_CONSTANT_STRING.LOI_MARONG, ENTITY_NAME.CHUYENGANHDAOTAO));
                txtMaSoNganh.Focus();
                return false;
            }
            if (cmbDonViPhuTrach.SelectedIndex == -1)
            {
                errorNotify.SetError(cmbDonViPhuTrach, string.Format(ERROR_CONSTANT_STRING.LOI_DANHSACHRONG, ENTITY_NAME.DONVIDAOTAO));
                btnBoQua.Focus();
                return false;
            }
            return true;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            if (ValidateData())
            {
                if (chuyenNganhDaoTao != null)
                {
                    #region Cập nhật thông tin
                    chuyenNganhDaoTao.MaNganhDaoTao = txtMa.Text;
                    chuyenNganhDaoTao.TenNganhDaoTao = txtTen.Text;
                    chuyenNganhDaoTao.MoTa = txtGhiChu.Text;
                    chuyenNganhDaoTao.MaSoNganhDaoTao = txtMaSoNganh.Text;
                    chuyenNganhDaoTao.MaDonViPhuTrachGUID = cmbDonViPhuTrach.SelectedValue.ToString();
                    //chuyenNganhDaoTao.DanhChoNCS = rChuyenNganhTienSi.Checked;
                    var rs = BizChuyenNganhDaoTao.Update(chuyenNganhDaoTao);
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else if (rs == CODE_RESULT_RETURN.MaTrung)
                    {
                        errorNotify.Clear();
                        errorNotify.SetError(txtMa, string.Format(ERROR_CONSTANT_STRING.LOI_MATRUNG, ENTITY_NAME.CHUYENGANHDAOTAO));
                        txtMa.Focus();
                        return;
                    }
                    else if (rs == CODE_RESULT_RETURN.TenTrung)
                    {
                        errorNotify.Clear();
                        errorNotify.SetError(txtTen, string.Format(ERROR_CONSTANT_STRING.LOI_TENTRUNG, ENTITY_NAME.CHUYENGANHDAOTAO));
                        txtTen.Focus();
                        return;
                    }
                    else
                    {
                        DialogUtils.ShowError(string.Format(ERROR_CONSTANT_STRING.LOI_CAPNHAT, ENTITY_NAME.CHUYENGANHDAOTAO));
                        return;
                    }
                    #endregion
                }
                else
                {
                    #region Thêm mới
                    chuyenNganhDaoTao = new NganhDaoTao();
                    chuyenNganhDaoTao.MaNganhDaoTao = txtMa.Text;
                    chuyenNganhDaoTao.MaSoNganhDaoTao = txtMaSoNganh.Text;
                    chuyenNganhDaoTao.TenNganhDaoTao = txtTen.Text;
                    chuyenNganhDaoTao.MoTa = txtGhiChu.Text;
                    chuyenNganhDaoTao.MaDonViPhuTrachGUID = cmbDonViPhuTrach.SelectedValue.ToString();
                    //chuyenNganhDaoTao.DanhChoNCS = rChuyenNganhTienSi.Checked;
                    var rs = BizChuyenNganhDaoTao.Add(chuyenNganhDaoTao);
                    chuyenNganhDaoTao = null;
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        //Sau khi thêm thành công kiểm tra có cho nhập thêm hay không
                        countObjectAdded++;
                        OnChanged(this, new Common.EntityArgs(chuyenNganhDaoTao));
                        if (chkTiepTucBoSung.Checked)
                        {
                            InitInterface();
                        }
                        else
                        {
                            DialogResult = System.Windows.Forms.DialogResult.OK;
                        }
                    }
                    else if (rs == CODE_RESULT_RETURN.MaTrung)
                    {
                        errorNotify.Clear();
                        errorNotify.SetError(txtMa, string.Format(ERROR_CONSTANT_STRING.LOI_MATRUNG, ENTITY_NAME.CHUYENGANHDAOTAO));
                        txtMa.Focus();
                        return;
                    }
                    else if (rs == CODE_RESULT_RETURN.TenTrung)
                    {
                        errorNotify.Clear();
                        errorNotify.SetError(txtTen, string.Format(ERROR_CONSTANT_STRING.LOI_TENTRUNG, ENTITY_NAME.CHUYENGANHDAOTAO));
                        txtTen.Focus();
                        return;
                    }
                    else
                    {
                        DialogUtils.ShowError(string.Format(ERROR_CONSTANT_STRING.LOI_THEM, ENTITY_NAME.CHUYENGANHDAOTAO));
                        return;
                    }
                    #endregion
                }
            }
        }

        private void FormQuanLyNganhDaoTao_ChiTiet_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (countObjectAdded > 0)
                DialogResult = System.Windows.Forms.DialogResult.OK;
        }
    }
}
